#pragma once
#include <SDL/SDL_events.h>
#include <SDL/SDL.h>
#include <Static.hpp>
#include <so_math.h>
#include <list>
#include <Camera.hpp>
class Application;
class Scene
{
    friend Application;

private:
    bool exited = false;
    void _init();

protected:
    int height = 0, width = 0;
    bool inited = false;
    std::list<std::string> viewable_list;
    Camera camera;

public:
    Scene() = default;
    Scene(int width, int height);
    ~Scene() = default;
    virtual void init();
    virtual int update(real delta);
    virtual void render(SDL_Renderer *render);
    virtual int handleEvent(SDL_Event &evt);
    std::list<std::string> getViewableData();
};